using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
using Business;
using Entity;

public partial class TomarAsistencia : BasePage
{    
    #region Eventos
    protected void Page_Load(object sender, EventArgs e)
    {
        this.Title = Resources.Resource.lblClientePageName;
        ddlActProgramada.Focus();

        if (!IsPostBack)
        {
            SetLabels();
            BEPeriodo oPeriodo = BLPeriodo.ObtenerPeriodoVigente();
            if (oPeriodo != null)
            {
                txtPeriodo.Text = oPeriodo.CodPeriodo;
            }

            Cargarddl_ListaActividadesxPeriodo(ddlActProgramada, UpdPnl_TomarAsistencia, true);
            btnCerrarActividad.Visible = false;
            btnImprimir.Visible = false;
            btnGrabar.Visible = false;

        }
    }

   
    protected void gvParticipantes_RowCommand(object sender, GridViewCommandEventArgs e)
    {
    }

    protected void gvParticipantes_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvParticipantes.PageIndex = e.NewPageIndex;
        CargarParticipantes(int.Parse(ddlActProgramada.SelectedValue));
    }

    protected void ddlActProgramada_SelectedIndexChanged(object sender, EventArgs e)
    {
    }

    protected void btnCerrarActividad_Click(object sender, EventArgs e)
    {
        BLActividadesPeriodo.CierraActividad(int.Parse(ddlActProgramada.SelectedValue), ((Usuario)Session[Constans.SessionUsuario.ToString()]).Login);
        ShowMessageInAjax(UpdPnl_TomarAsistencia, "La actividad ha sido cerrada");
    }

    protected void btnImprimir_Click(object sender, EventArgs e)
    {
        //Response.Redirect("Observa_Mnt.aspx");
    }

    protected void btnConsultar_Click(object sender, EventArgs e)
    {
        String strMessage = String.Empty;
        if ((ddlActProgramada.Text == String.Empty) || (ddlActProgramada.SelectedIndex == 0))
            strMessage = "Seleccione una Actividad";

        if (strMessage != String.Empty)
        {
            ShowMessageInAjax(UpdPnl_TomarAsistencia, strMessage);
            return;
        }
        ddlActProgramada.Enabled = false;
        btnConsultar.Enabled = false;

        DataTable dt= BLActividadesPeriodo.ObtenerActividadPeriodo(int.Parse(ddlActProgramada.SelectedValue));
        if (dt != null)
        {
            if (dt.Rows.Count > 0)
            {
                DataRow dr = dt.Rows[0];
                txtEstado.Text = dr["Des_Estado"].ToString();
            }
        }

        CargarParticipantes(int.Parse(ddlActProgramada.SelectedValue));
    }

    protected void btnGrabar_Click(object sender, EventArgs e)
    {
        foreach (GridViewRow grd_Row in gvParticipantes.Rows)
        {
            Boolean bool_Asistencia = ((CheckBox)grd_Row.FindControl("chkAsistencia")).Checked;
            String str_CodHermano = grd_Row.Cells[0].Text.Trim();
            BLAsistenciaActividad.GrabaAsistencia(int.Parse(ddlActProgramada.SelectedValue), str_CodHermano, bool_Asistencia, ((Usuario)Session[Constans.SessionUsuario.ToString()]).Login);
        }

        ShowMessageInAjax(UpdPnl_TomarAsistencia, "Asistencias a activdad han sido grabadas");
        btnConsultar_Click(null, null);

    }

    protected void ImgLimpiar_Click(object sender, ImageClickEventArgs e)
    {
        ddlActProgramada.SelectedIndex = -1;
        ddlActProgramada.Enabled = true;
        txtEstado.Text = "";
        btnConsultar.Enabled = true;
        pnlParticipantes.Visible = false;
        pnlMensaje.Visible = false;

        btnCerrarActividad.Visible = false;
        btnImprimir.Visible = false;
        btnGrabar.Visible = false;

    }

    protected void btnSalir_Click(object sender, EventArgs e)
    {
        Response.Redirect("Default.aspx");
    }

    #endregion

    #region Metodos
    protected void SetLabels()
    {
        lblTitulo.Text = "TOMAR ASISTENCIA";
    }

    private void CargarParticipantes(int intId_PerActFec)
    {
        try
        {
            DataTable dtParticipantes = BLActPerParticipantes.ListarParticipantes(intId_PerActFec);

            AddCustomColumns(dtParticipantes);

            if (dtParticipantes.Rows.Count > 0)
            {
                pnlParticipantes.Visible = true;
                pnlMensaje.Visible = false;
                gvParticipantes.DataSource = dtParticipantes;
                gvParticipantes.DataBind();

                btnCerrarActividad.Visible = true;
                btnCerrarActividad.Enabled = true;
                btnImprimir.Visible = true;
                btnGrabar.Visible = true;
                btnGrabar.Enabled = true;

                gvParticipantes.Enabled = true;
                
                if (txtEstado.Text == "CERRADA")
                {
                    btnCerrarActividad.Enabled=false;
                    btnGrabar.Enabled = false;
                    gvParticipantes.Enabled = false;
                }

            }
            else
            {
                pnlParticipantes.Visible = false;
                pnlMensaje.Visible = true;
            }
        }
        catch (ManagerBusinessException)
        {
            ShowErrorMessageInAjax(UpdPnl_TomarAsistencia);
        }
        catch (Exception ex)
        {
            Publish(ex, String.Empty);
            ShowErrorMessageInAjax(UpdPnl_TomarAsistencia);
        }
    }

    private void AddCustomColumns(DataTable dtParticipantes)
    {
        dtParticipantes.Columns.Add("itemChecked", Type.GetType("System.Boolean"));
        foreach (DataRow dr in dtParticipantes.Rows)
        {
            if (dr["Participacion"].ToString().Trim() == "True")
            {
                dr["itemChecked"] = true;
            }
            else
            {
                dr["itemChecked"] = false;
            }
        }
    }

    private ArrayList GetItemsCheckedInGrid()
    {
        ArrayList arrayList = new ArrayList();
        for (int i = gvParticipantes.Rows.Count - 1; i >= 0; i--)
        {
            GridViewRow dgRow = gvParticipantes.Rows[i];
            if (dgRow.RowType == DataControlRowType.DataRow)
            {                
                if (((CheckBox)dgRow.FindControl("chk")).Checked)
                    arrayList.Add(new Object[] { ((Label)dgRow.FindControl("lblClienteId")).Text, dgRow.Cells[1].Text});
            }
        }
        return arrayList;
    }

    #endregion           
}
